Program-controlled systems have been applied to a wide range of data processing and control applications. The functional flexibility of these systems comes from the program, stored in memory of such systems, which controls their operation.
In program-controlled systems, it is frequently necessary to introduce program changes after initial installation to accommodate new services and/or new hardware. The most common way of introducing such changes is by shutting down the system and completely reinitializing it. Unfortunately, this renders the system incapable of providing service for the initialization interval, usually, a period of several minutes or even hours. Moreover, initialization frequently destroys some portions of longer term data which may affect subsequent system performance; it may, for example, clear data provided by a telephone customer defining some aspect of his service. Initialization is especially undesirable if the program-controlled system controls continuous processes, such as chemical processes; careful plans must be made to introduce such initialization at a time when the controlled chemical processes have all been stopped or have reached some equilibrium.
A less drastic method of introducing program changes with partial initialization is accomplished, for example, in telephone electronic switching systems, such as the No. 1 Electronic Switching System described in the Bell System Technical Journal, September, 1964 issue, and in U.S. Pat. No. 3,570,008. The special characteristics of these systems have made it possible to introduce changes without disturbing those customers who are already connected to other customers. All data dealing with completed connections and with customer services is isolated and specially treated by initialization programs. These systems have duplicate processors, one of which is on-line and the other of which is a standby unit ready to take over control. A modified version of a program is loaded into one of the processors while the processor is in the standby mode. It is then switched on-line and executes an initialization program which does not modify any of the data associated with completed connections or customer services. The modified version of the program is then also loaded into the other processor and the system is in a stable state. Customers who were in the middle of dialing will not have their calls completed and therefore this kind of change is made during hours of very low system activity to minimize disturbance.
This method of introducing changes is not applicable to more sophisticated modern program-controlled systems. These systems are normally run under the control of a complex program called an operating system which initiates other programs called processes. The actual execution of system tasks is normally accomplished by the processes through execution of a series of program segments referred to as program functions. Execution of the program functions may be initiated by a function call from any process in the system. Program functions access a common data base, large portions of which are controlled by many processes, in which the linkages among various associated data items are manfold and complex. Such complex data structures drastically complicate the kind of special treatment of a selected portion of data used in the abovenoted prior art systems. Thus, initializing some processes while retaining others, while maintaining a consistent data base, is very difficult. Furthermore, it is impossible to predict the nature of program changes and to plan for these changes in the design of the data base. For all of the above reasons, it has been difficult to introduce all but the most minor program changes into the more sophisticated modern program-controlled systems without massive initialization.